package cn.tedu.rabbitmqspring.m2;

import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Scanner;

@Component
public class Producer {

    //RabbitAutoConfiguration 自动配置类中，自动创建 AmqpTemplate 实例
    @Autowired
    private AmqpTemplate t;

    //生产者的发送方法，需要手动调用
    public void send(){
        while (true){
            System.out.print("输入消息:");
            String s = new Scanner(System.in).nextLine();
            t.convertAndSend("task_queue111", s); //默认是持久消息


            // 如果要发送非持久消息，使用预处理对象对消息的持久属性重新设置
            // t.convertAndSend("", "task_queue", s, new MessagePostProcessor() {
            //     @Override
            //     public Message postProcessMessage(Message message) throws AmqpException {
            //         //可以重新设置消息的持久属性
            //         //设置完成后，返回这条消息
            //         //之后才会完成消息发送
            //     }
            // });
        }
    }
}
